//package com.pony.iphone.mq;
//
//import com.pony.iphone.config.QuestionQueueConfig;
//import com.pony.iphone.dto.DingTalkProperties;
//import com.pony.iphone.dto.QuestionMessage;
//import com.pony.iphone.utils.ding.DingTalkUtil;
//import com.pony.iphone.utils.ding.pojo.DingTalkMessageBuilder;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.time.format.DateTimeFormatter;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//
///**
// * @author pony
// * @description: 新题目消息消费者
// */
//@Component
//@Slf4j
//public class QuestionMessageConsumer {
//
//    @Autowired
//    private DingTalkUtil dingTalkUtil;
//
//    @Autowired
//    private DingTalkRateLimiter rateLimiter;
//
//    // 钉钉的配置信息
//    @Autowired
//    private DingTalkProperties dingTalkProperties;
//
//    /**
//     * 消费题目消息并发送到钉钉
//     */
//    @RabbitListener(queues = QuestionQueueConfig.QUESTION_QUEUE)
//    public void processQuestion(QuestionMessage message) {
//        log.info("开始处理新题目通知: {}", message.getQuestionContent());
//
//        // 频率控制
//        if (!rateLimiter.allowSend()) {
//            log.warn("钉钉频率限制，稍后重试题目通知: {}", message.getQuestionContent());
//            return;
//        }
//
//        // 获取要@的手机号列表
//        List<String> atMobiles = dingTalkProperties.hasAtMobiles() ?
//                dingTalkProperties.getValidAtMobiles() : new ArrayList<>();
//
//        // 构建消息时传入手机号列表
//        String dingTalkMessage = buildDingTalkMessage(message, atMobiles);
//
//        log.debug("钉钉消息内容: {}", dingTalkMessage);
//        log.debug("要@的手机号: {}", atMobiles);
//
//        // 构建消息
//        DingTalkMessageBuilder builder = dingTalkUtil.buildMessage()
//                .markdown("📚 发现新题目", dingTalkMessage);
//
//        // 设置@信息
//        if (!atMobiles.isEmpty()) {
//            builder.atMobiles(atMobiles);
//            log.info("已配置 {} 个需要@的人员: {}", atMobiles.size(), atMobiles);
//        }
//
//        // 发送消息
//        boolean sendResult = builder.send();
//
//        if (sendResult) {
//            log.info("新题目通知发送成功: {}", message.getQuestionContent());
//        } else {
//            log.error("新题目通知发送失败: {}", message.getQuestionContent());
//        }
//    }
//
//    /**
//     * 构建格式化的钉钉消息
//     */
//    private String buildDingTalkMessage(QuestionMessage message, List<String> atMobiles) {
//        StringBuilder sb = new StringBuilder();
//        sb.append("### 🆕 答题系统发现新题目\n\n");
//        sb.append("**题目内容：** ").append(message.getQuestionContent()).append("\n\n");
//
//        if (message.getOptions() != null && !message.getOptions().isEmpty()) {
//            sb.append("**选项列表：**\n");
//            for (int i = 0; i < message.getOptions().size(); i++) {
//                sb.append("> ").append(i + 1).append(". ").append(message.getOptions().get(i)).append("\n");
//            }
//            sb.append("\n");
//        }
//
//        sb.append("**题库来源：** `").append(message.getLibraryName()).append("`\n");
//        sb.append("**发现时间：** ").append(
//                message.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
//        ).append("\n\n");
//
//        // 在消息内容中添加@手机号
//        if (atMobiles != null && !atMobiles.isEmpty()) {
//            sb.append("**相关人员：** ");
//            for (String mobile : atMobiles) {
//                // 去掉+86-前缀，只保留纯数字
//                String pureMobile = mobile.replace("+86-", "");
//                sb.append("@").append(pureMobile).append(" ");
//            }
//            sb.append("\n\n");
//        }
//
//        sb.append("---\n");
//        sb.append("💡 请及时处理该题目！");
//
//        return sb.toString();
//    }
//}